/*
 * p3007.cpp
 *
 *  Created on: 2013-3-17
 *      Author: zy
 */

#include<algorithm>
#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
int sig(double d) {
	return fabs(d) < 1E-6 ? 0 : d < 0 ? -1 : 1;
}
struct Point{
	double x, y;
	double k;
	Point(){}
	Point(double x, double y): x(x), y(y) {}
	void set(double x, double y) {
		this->x = x;
		this->y = y;
	}
	double mod(){//模
		return sqrt(x*x+y*y);
	}
	double mod_pow(){//模的平方
		return x*x + y*y;
	}
	void output() {
		printf("x = %f, y = %f\n", x, y);
	}
	bool operator < (const Point &p) const {
		return sig(x-p.x) != 0 ? x < p.x : sig(y-p.y) < 0;
	}
};

double cross(Point o, Point a, Point b) {
	return (a.x - o.x)*(b.y - o.y)-(b.x - o.x)*(a.y - o.y);
}
double dot(Point &o, Point &a, Point &b) {
	return (a.x-o.x)*(b.x-o.x) + (a.y-o.y)*(b.y-o.y);
}
int btw(Point &x, Point &a, Point &b) {
	return sig(dot(x, a, b));
}

double dis(Point a, Point b) {
	return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
double dot(Point &a, Point &b) {
	return a.x*b.x + a.y*b.y;	//(a.x-o.x)*(b.x-o.x) + (a.y-o.y)*(b.y-o.y);
}
double cos(Point o, Point a, Point b) {
	return dot(o,a,b)/dis(o,a)/dis(o,b);
}
Point wai(Point a, Point b, Point c) {
	double a1 = a.x - b.x;
	double a2 = a.x - c.x;
	double b1 = a.y - b.y;
	double b2 = a.y - c.y;
	double c1 = a.x*a.x + a.y*a.y - b.x*b.x - b.y*b.y;
	double c2 = a.x*a.x + a.y*a.y - c.x*c.x - c.y*c.y;

	double t = (a1*b2-a2*b1)*2.0;
	return Point ((c1*b2-c2*b1)/t, (a1*c2-a2*c1)/t);
}
int graham(Point*p, int n, int*ch)
{
	#define push(x)     ch[len ++]=x
	#define pop()		len --
	sort(p, p+n);
	int len = 0, len0 = 1, i;
	for(i = 0; i < n; i ++)
	{
		while(len > len0 && sig(cross(p[ch[len-1]], p[ch[len-2]], p[i]))<=0)
			pop();
		push(i);
	}
	len0 = len;
	for(i = n-2; i >= 0; i --) {
		while(len > len0 && sig(cross(p[ch[len-1]], p[ch[len-2]], p[i]))<=0)
			pop();
		push(i);
	}
	return len-1;
}
/**
	minimal enclosing circle(最小覆盖圆)
	---------------------------------------
	p: 点集合
	n: 个数
	center: 存储这些点的中心
	返回:半径

	效率：nlgn

	需要调用Jarvis等函数
*/
double MEC(Point *p, int n, Point &center) {
#define g1(a,b,c) p##a.x = pp##b.x-pp##c.x;	p##a.y = pp##b.y-pp##c.y
	static int idx, i, ch[1000010], num, s1, s2;
	static double tmp, cos_v, cos_s1, cos_s2, a, b, c, d;
	static Point p1, p2, p3;
	num = graham(p, n, ch);
	s1 = 0, s2 = 1;
	while(1) {
		idx = 0;
		cos_v = -100;
		Point &pp1 = p[ch[s1]], &pp2 = p[ch[s2]];
		for(i = 0; i < num; i ++)
		{
			tmp = cos(p[ch[i]], pp1, pp2);
			if(tmp > cos_v) {
				cos_v = tmp;
				idx = i;
			}
		}
		Point &pp3 = p[ch[idx]];
		if(sig(cos_v) <= 0)
		{
			center.x = (pp1.x+pp2.x)/2.0;
			center.y = (pp1.y+pp2.y)/2.0;
			break;
		}
		cos_s1 = cos(pp1, pp2, pp3);
		cos_s2 = cos(pp2, pp1, pp3);

		if(sig(cos_s1)>=0 && sig(cos_s2)>=0) {	//这个三角形就是

			center=wai(pp1,pp2,pp3);
			break;
		}
		if(sig(cos_s1)<0)	s1 = idx;
		else			s2 = idx;
	}
	return dis(center, p[ch[s1]]);
}
Point p[600];
int main()
{
	int n;
	while(scanf("%d",&n),n)
	{
		for(int i=0;i<n;i++)scanf("%lf%lf",&p[i].x,&p[i].y);
		Point c;
		double r=MEC(p,n,c);
		printf("%0.2lf %0.2lf %0.2lf\n",c.x,c.y,r);
	}
	return 0;
}
